#ifndef STATE_H
#define STATE_H


#include <iostream>
#include <string>
using namespace std;

class Agent;

class State
{
public:
    State();
    virtual ~State();
    //对状态转移进行检查
    virtual int check_transition_event_initialize();
    virtual int check_transition_event_terminate();
    virtual int check_transition_event_queue();
    virtual int check_transition_event_queue_full();
    virtual int check_transition_event_get_result();
    virtual int check_transition_event_get_result_empty();
    virtual int check_transition_event_error();
    //对状态转移进行检查
    virtual int perform_transition_event_initialize(Agent *sub);
    virtual int perform_transition_event_terminate(Agent *sub);
    virtual int perform_transition_event_queue(Agent *sub);
    virtual int perform_transition_event_queue_full(Agent *sub);
    virtual int perform_transition_event_get_result(Agent *sub);
    virtual int perform_transition_event_get_result_empty(Agent *sub);
    virtual int perform_transition_event_error(Agent *sub);
};

#endif // STATE_H
